package api

type ChaosStatus string

const (
	Injected     ChaosStatus = "injected"
	Injecting    ChaosStatus = "injecting"
	InjectFailed ChaosStatus = "injectFailed"
	Running      ChaosStatus = "running"
)

// Chaos API交互时使用的结构
type Chaos struct {
	// 故障的一个可读性更强的唯一标识,结构为 chaos_type#chaos_action#options, options 可能为空
	// 用于直观的表明该故障的效果,chaos_type 和 chaos_action 均来自ChaosMesh的定义
	//
	// e.g networkchaos#delay 网络延时
	ComplexAction string `json:"complex_action"`
	// Desc: 故障描述,用于前端展示
	Desc string `json:"describe"`
	// Params API交互时需要确定的参数,目前只提供instance参数
	// Params.Instance 用户期望注入故障的目标对象
	Params []ChaosParams `json:"params"`
	// 故障当前的状态
	Status ChaosStatus `json:"status"`
	// 故障相关提示(如果有)
	Note string `json:"note"`
	// 受故障影响的实例POD ID
	Instance []string `json:"instance"`

	// 运行时参数,从ComplexAction截取chaos_type的部分,方便后续处理
	ChaosType   string `json:"-"`
	ChaosAction string `json:"-"`
	// 运行时参数,确定故障在模板中的序号,用于固定前端展示顺序
	ChaosNumber int `json:"-"`
}

type ChaosParams struct {
	Name    string   `json:"name"`
	Type    string   `json:"type"`
	Value   string   `json:"value"`
	Options []string `json:"options"`
}
